#

| Chapter 12 Job Control |

## 12.9 Running Multiple Shell Sessions with screen

screen | An interesting alternative to job control (12.1) is the screen program, which lets you run several shell sessions from the same terminal, switching between them at will.

For example, often when I'm logged in I want to reply to a mail message (1.33) but I need to test something first. Currently, I have to get out of mail to do it, or start a shell escape (30.26) within mail. But using the screen program, I could just switch back and forth between shells. I could run mail in one shell, test things in another, edit a file in a third, etc.-up to 10 shells in all. (If you run Linux, you can choose from eight virtual consoles by using the `[ALT]` key with one of the keys `[F1]` through `[F8]`. But that still doesn't have all the nice features of screen.)

Once you start up screen, a full screen disclaimer appears (which can be disabled by configuring $HOME/.screenrc). After pressing SPACE or RETURN, you'll be placed in an initial shell with your usual system prompt. This shell is screen number 0.

#### Screen 0

I can use this shell to read my mail.

>     lmui@ruby 26% mail
>     Mail version SMI 4.0 Wed Oct 23 10:38:28 PDT 1991  Type ? for help.
>     "/usr/spool/mail/lmui": 42 messages 6 new
>        ...
>      N 38 kramer   Wed Oct 28 10:31   20/654   Posting on comp.unix.que

>      N 39 tim      Wed Oct 28 10:46   39/1485  Re: awf
>      N 40 tim      Wed Oct 28 10:47   26/832   Re: announcement of vol8
>     &

Now, suppose I read a mail message asking my opinion about a news posting. Rather than get out of mail to read news before I respond, I can just start a new shell using CTRL-a CTRL-c and start up a news reader there. This new window is screen number 1.

#### Screen 1

>     lmui@ruby 26% rn comp.unix.questions
>     Unread news in comp.unix.questions                    333 articles

>     ******** 333 unread articles in comp.unix.questions-read now? [ynq]

Once I read the article in question, I switch back to the previous shell using CTRL-a CTRL-a and start to respond to the mail message:

#### Screen 0

>     >  38 kramer    Wed Oct 28 10:31   20/654   Posting on comp.unix.que
>      N 39 tim       Wed Oct 28 10:46   39/1485  Re: awf
>      N 40 tim       Wed Oct 28 10:47   26/832   Re: announcement of vol8
>     & r
>     To: kramer@ora.com
>     Subject: Re: Posting on comp.unix.questions

>     He's right that you can use -i for interactive prompting, but
>     I don't think -f disables interactive mode.

Now, suppose I want to check my facts before I continue writing the message. Rather than quit my message or start a subshell, I can just start up yet another shell window by pressing CTRL-a CTRL-c again. Then I can run the commands I want to test. Once I have my information, I can go back to the previous shell using CTRL-a CTRL-a again, or using CTRL-a 0 to explicitly call up screen number 0.

One of the really neat things about screen is that it even lets you "detach" a screen, so that you can log out, then go home and pick up where you left off, using a different terminal (3.7).

- LM

12.8 Job Control in a Nutshell |  | 13. Redirecting Input and Output